import allure
import pytest
from selenium import webdriver

#固件的作用范围：
# 1、session级别   会话
# 2、module级别    模块
# 3、class级别     类
# 4、function级别  函数

@pytest.fixture(scope='module')
# @pytest.fixture(scope='function',autouse=True)
# autouse=True：自动执行，无需调用


def driver():
    #将driver定义为全局变量
    global driver
    #初始化环境
    # 打开浏览器
    driver = webdriver.Edge()
    # 窗口最大化
    driver.maximize_window()
    # # 隐式等待
    # driver.implicitly_wait(20)
    # 进入被测试系统页面
    url = "http://localhost/ecshop/user.php"
    driver.get(url)
    yield driver

## 钩子函数，获取结果
@pytest.hookimpl(hookwrapper=True,tryfirst=True)
def pytest_runtest_makereport(item,call):
    # 获取钩子函数的结果
    out = yield
    # 获取测试报告
    report = out.get_result()
    # 脚本执行失败，截图
    if report.when == 'call' and report.outcome == "failed":
        # 使用 allure.attach()，将二进制数据截图附加到allure报告中
        allure.attach(driver.get_screenshot_as_png(), "失败截图", allure.attachment_type.PNG)


# def fixture():
#     print("环境预置。。。。")
#     # yield:类似return，执行完上面的输出后再执行class，最后执行yiled后面的print
#     yield "初始化的浏览器"
#     print("恢复环境。。。。")